package cn.basic.social.api.weixintalk.client;

import cn.basic.social.api.weixintalk.WxRequest;
import cn.basic.social.api.weixintalk.WxResponse;
import cn.basic.social.api.exception.ApiException;

/**
 * @ClassName BaseWxTalkClient
 * @Description 微信客户端接口
 * @Author zlf
 * @Date 2023/8/25 10:36
 */
public interface BaseWxTalkClient extends BaseWxClient {

    /**
     * 执行API请求
     *
     * @param <T>     具体的API响应类
     * @param request 具体的API请求类
     * @param appid   应用唯一标识，在微信开放平台提交应用审核通过后获得
     * @param secret  应用密钥AppSecret，在微信开放平台提交应用审核通过后获得
     * @param code    登录扫码获取到的code
     * @return
     * @author zlf
     * @date 10:33 2023/8/25
     */
    public <T extends WxResponse> T doExecute(WxRequest<T> request, String appid, String secret, String code) throws ApiException;

    /**
     * 执行API请求
     *
     * @param <T>       具体的API响应类
     * @param request   具体的API请求类
     * @param appid     应用唯一标识，在微信开放平台提交应用审核通过后获得
     * @param secret    应用密钥AppSecret，在微信开放平台提交应用审核通过后获得
     * @param code      登录扫码获取到的code
     * @param grantType 固定填authorization_code
     * @return
     * @author zlf
     * @date 10:33 2023/8/25
     */
    public <T extends WxResponse> T doExecute(WxRequest<T> request, String appid, String secret, String code, String grantType) throws ApiException;

}
